package br.com.flexdev.util.imagem;

import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ServiceUpload extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public ServiceUpload() {
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String contentType = request.getContentType();
		String diretorio = new String("C:\\Desenvolvimento\\Workspace 3.3\\Projetoflexdev\\WebContent\\img\\");
		String nomeImagem = request.getParameter("nomeImagem");

		try {
			if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) 
			{
				DataInputStream in = new DataInputStream(request.getInputStream());
				int formDataLength = request.getContentLength();
				byte dataBytes[] = new byte[formDataLength];
				int byteRead = 0;
				int totalBytesRead = 0;

				while (totalBytesRead < formDataLength) 
				{
					byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
					totalBytesRead += byteRead;
				}

				String file = new String(dataBytes);
				//**
				
				
				//Trabalha com o Content...
				int lastIndex = contentType.lastIndexOf("=");
				String boundary = contentType.substring(lastIndex + 1,contentType.length());

				int pos;
				pos = file.indexOf("filename=\"");
				pos = file.indexOf("\n", pos) + 1;
				pos = file.indexOf("\n", pos) + 1;
				pos = file.indexOf("\n", pos) + 1;

				int boundaryLocation = file.indexOf(boundary, pos) - 4;
				int startPos = ((file.substring(0, pos)).getBytes()).length;
				int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

				// Salva no diretorio especificado
				FileOutputStream fileOut = new FileOutputStream(diretorio + nomeImagem);

				fileOut.write(dataBytes, startPos, (endPos - startPos));
				fileOut.flush();
				fileOut.close();

				// Gera a Thumb
				ThumbGenerator thumbGen = new ThumbGenerator();
				thumbGen.setNomeImagem(nomeImagem);
				thumbGen.gerarThumb();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

/*
  	String nomeImagem = file.substring(file.indexOf("filename=\"") + 10);
	nomeImagem = nomeImagem.substring(0, nomeImagem.indexOf("\n"));
	nomeImagem = nomeImagem.substring(nomeImagem.lastIndexOf("\\") + 1,nomeImagem.indexOf("\""));

	int posicao = nomeImagem.indexOf(".");
	nomeImagem = nomeImagem.replace(nomeImagem.substring(0, posicao),outroNome);
*/
